package com.jrx.anytxn.reporting.dto;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 还款流水响应
 * @author xqy
 * @version 1.0
 * @date 2020/4/20
 */
public class MrPaymentLogRes  implements Serializable {

    /**
     * 自增主键
     * 表字段:id
     */
    private Long id;

    /**
     * 租户id
     * 表字段:tenant_id
     */
    private String tenantId;

    /**
     * 渠道id
     * 表字段:customer_id
     */
    private String customerId;

    /**
     * 贷款业务号
     * 表字段:loan_id
     */
    private String loanId;

    /**
     * 还款流水号
     * 表字段:seq_no
     */
    private String seqNo;

    /**
     * 机构号
     * 表字段:organization_id
     */
    private String organizationId;

    /**
     * 渠道编号
     * 表字段:channel
     */
    private String channel;

    /**
     * 产品id
     * 表字段:product_id
     */
    private String productId;

    /**
     * 还款类型
     * 表字段:payment_type
     */
    private String paymentType;

    /**
     * 扣款种类
     * 表字段:charge_type
     */
    private String chargeType;

    /**
     * 联合贷标识
     * 表字段:joint_loan_flag
     */
    private String jointLoanFlag;

    /**
     * 是否足额扣款
     * 表字段:is_full_pay
     */
    private String isFullPay;

    /**
     * 扣款行号
     * 表字段:payer_bank
     */
    private String payerBank;

    /**
     * 扣款行名称
     * 表字段:payer_bank_name
     */
    private String payerBankName;

    /**
     * 扣款账号
     * 表字段:payer_account
     */
    private String payerAccount;

    /**
     * 扣款账户类型
     * 表字段:payer_account_type
     */
    private String payerAccountType;

    /**
     * 账户可用余额
     * 表字段:avail_balance
     */
    private BigDecimal availBalance;

    /**
     * 发生日期
     * 表字段:posting_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date postingDate;

    /**
     * 最终状态 S 成功;F 失败;T 扣款成功，待分配;D 待发起扣款;O 已发起扣款，扣款状态未知，待查询
     * 表字段:sum_status
     */
    private String sumStatus;

    /**
     * 币种
     * 表字段:currency
     */
    private String currency;

    /**
     * 扣款总金额
     * 表字段:total_amount
     */
    private BigDecimal totalAmount;

    /**
     * 实还本金
     * 表字段:actualcorp
     */
    private BigDecimal actualcorp;

    /**
     * 实还利息
     * 表字段:actualinte
     */
    private BigDecimal actualinte;

    /**
     * 实还罚息
     * 表字段:penalty
     */
    private BigDecimal penalty;

    /**
     * 实收费用
     * 表字段:repay_fee
     */
    private BigDecimal repayFee;

    /**
     * 实收提前结清费用
     * 表字段:prepay_fee
     */
    private BigDecimal prepayFee;

    /**
     * 实收复利
     * 表字段:repay_compound_interest
     */
    private BigDecimal repayCompoundInterest;

    /**
     * 第几期
     * 表字段:billing_tenor
     */
    private Integer billingTenor;

    /**
     * 总期数
     * 表字段:total_tenor
     */
    private Integer totalTenor;

    /**
     * 本行出资金额
     * 表字段:posting_amount_onus
     */
    private BigDecimal postingAmountOnus;

    /**
     * 合作方id
     * 表字段:partner_id
     */
    private String partnerId;

    /**
     * 兜底模式
     * 表字段:reveal_mobel
     */
    private String revealMobel;

    /**
     * 资金源id
     * 表字段:fund_id
     */
    private String fundId;

    /**
     * 贷款期限天数
     * 表字段:total_days
     */
    private Integer totalDays;

    /**
     * 代偿标志
     * 表字段:compensatory_flag
     */
    private String compensatoryFlag;

    /**
     * 非应记状态
     * 表字段:non_accruals_flag
     */
    private String nonAccrualsFlag;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getLoanId() {
        return loanId;
    }

    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    public String getSeqNo() {
        return seqNo;
    }

    public void setSeqNo(String seqNo) {
        this.seqNo = seqNo;
    }

    public String getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getPaymentType() {
        return paymentType;
    }

    public void setPaymentType(String paymentType) {
        this.paymentType = paymentType;
    }

    public String getChargeType() {
        return chargeType;
    }

    public void setChargeType(String chargeType) {
        this.chargeType = chargeType;
    }

    public String getJointLoanFlag() {
        return jointLoanFlag;
    }

    public void setJointLoanFlag(String jointLoanFlag) {
        this.jointLoanFlag = jointLoanFlag;
    }

    public String getIsFullPay() {
        return isFullPay;
    }

    public void setIsFullPay(String isFullPay) {
        this.isFullPay = isFullPay;
    }

    public String getPayerBank() {
        return payerBank;
    }

    public void setPayerBank(String payerBank) {
        this.payerBank = payerBank;
    }

    public String getPayerBankName() {
        return payerBankName;
    }

    public void setPayerBankName(String payerBankName) {
        this.payerBankName = payerBankName;
    }

    public String getPayerAccount() {
        return payerAccount;
    }

    public void setPayerAccount(String payerAccount) {
        this.payerAccount = payerAccount;
    }

    public String getPayerAccountType() {
        return payerAccountType;
    }

    public void setPayerAccountType(String payerAccountType) {
        this.payerAccountType = payerAccountType;
    }

    public BigDecimal getAvailBalance() {
        return availBalance;
    }

    public void setAvailBalance(BigDecimal availBalance) {
        this.availBalance = availBalance;
    }

    public Date getPostingDate() {
        return postingDate;
    }

    public void setPostingDate(Date postingDate) {
        this.postingDate = postingDate;
    }

    public String getSumStatus() {
        return sumStatus;
    }

    public void setSumStatus(String sumStatus) {
        this.sumStatus = sumStatus;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getActualcorp() {
        return actualcorp;
    }

    public void setActualcorp(BigDecimal actualcorp) {
        this.actualcorp = actualcorp;
    }

    public BigDecimal getActualinte() {
        return actualinte;
    }

    public void setActualinte(BigDecimal actualinte) {
        this.actualinte = actualinte;
    }

    public BigDecimal getPenalty() {
        return penalty;
    }

    public void setPenalty(BigDecimal penalty) {
        this.penalty = penalty;
    }

    public BigDecimal getRepayFee() {
        return repayFee;
    }

    public void setRepayFee(BigDecimal repayFee) {
        this.repayFee = repayFee;
    }

    public BigDecimal getPrepayFee() {
        return prepayFee;
    }

    public void setPrepayFee(BigDecimal prepayFee) {
        this.prepayFee = prepayFee;
    }

    public BigDecimal getRepayCompoundInterest() {
        return repayCompoundInterest;
    }

    public void setRepayCompoundInterest(BigDecimal repayCompoundInterest) {
        this.repayCompoundInterest = repayCompoundInterest;
    }

    public Integer getBillingTenor() {
        return billingTenor;
    }

    public void setBillingTenor(Integer billingTenor) {
        this.billingTenor = billingTenor;
    }

    public Integer getTotalTenor() {
        return totalTenor;
    }

    public void setTotalTenor(Integer totalTenor) {
        this.totalTenor = totalTenor;
    }

    public BigDecimal getPostingAmountOnus() {
        return postingAmountOnus;
    }

    public void setPostingAmountOnus(BigDecimal postingAmountOnus) {
        this.postingAmountOnus = postingAmountOnus;
    }

    public String getPartnerId() {
        return partnerId;
    }

    public void setPartnerId(String partnerId) {
        this.partnerId = partnerId;
    }

    public String getRevealMobel() {
        return revealMobel;
    }

    public void setRevealMobel(String revealMobel) {
        this.revealMobel = revealMobel;
    }

    public String getFundId() {
        return fundId;
    }

    public void setFundId(String fundId) {
        this.fundId = fundId;
    }

    public Integer getTotalDays() {
        return totalDays;
    }

    public void setTotalDays(Integer totalDays) {
        this.totalDays = totalDays;
    }

    public String getCompensatoryFlag() {
        return compensatoryFlag;
    }

    public void setCompensatoryFlag(String compensatoryFlag) {
        this.compensatoryFlag = compensatoryFlag;
    }

    public String getNonAccrualsFlag() {
        return nonAccrualsFlag;
    }

    public void setNonAccrualsFlag(String nonAccrualsFlag) {
        this.nonAccrualsFlag = nonAccrualsFlag;
    }

    @Override
    public String toString() {
        return "MrPaymentLogRes{" + "id=" + id + ", tenantId='" + tenantId + '\'' + ", customerId='" + customerId + '\'' + ", loanId='" + loanId + '\'' + ", seqNo='" + seqNo + '\'' + ", organizationId='" + organizationId + '\'' + ", channel='" + channel + '\'' + ", productId='" + productId + '\'' + ", paymentType='" + paymentType + '\'' + ", chargeType='" + chargeType + '\'' + ", jointLoanFlag='" + jointLoanFlag + '\'' + ", isFullPay='" + isFullPay + '\'' + ", payerBank='" + payerBank + '\'' + ", payerBankName='" + payerBankName + '\'' + ", payerAccount='" + payerAccount + '\'' + ", payerAccountType='" + payerAccountType + '\'' + ", availBalance=" + availBalance + ", postingDate=" + postingDate + ", sumStatus='" + sumStatus + '\'' + ", currency='" + currency + '\'' + ", totalAmount=" + totalAmount + ", actualcorp=" + actualcorp + ", actualinte=" + actualinte + ", penalty=" + penalty + ", repayFee=" + repayFee + ", prepayFee=" + prepayFee + ", repayCompoundInterest=" + repayCompoundInterest + ", billingTenor=" + billingTenor + ", totalTenor=" + totalTenor + ", postingAmountOnus=" + postingAmountOnus + ", partnerId='" + partnerId + '\'' + ", revealMobel='" + revealMobel + '\'' + ", fundId='" + fundId + '\'' + ", totalDays=" + totalDays + ", compensatoryFlag='" + compensatoryFlag + '\'' + ", nonAccrualsFlag='" + nonAccrualsFlag + '\'' + '}';
    }
}